package com.efuture.chaptersix

/* @Description:Kotlin语言接口的定义
 * @Auther: zhaoshanshan
 * @Date: 2022/03/07/6:47 下午
 */
//定义IUSB接口
// 1.接口里面的所有成员 和 接口本身 都是 public open 的，所以不需要open，这个是接口的特殊
// 2.接口不能有主构造，反正就是没有构造
// 3.实现类不仅仅要重写接口的函数，也要重写 接口的成员
// 4.接口实现代码区域，全部都要增加 override 关键字来修饰
interface IUSB{
    var usbVersionInfo:String
    var usbInsertDeviceInfo:String
    fun insertUsb():String
}
//鼠标实现类
class Mouse(override var usbVersionInfo: String="3.0", override var usbInsertDeviceInfo: String="鼠标插入了USB接口") :IUSB{
    override fun insertUsb(): String {
        return "鼠标usbVersionInfo:${usbVersionInfo},usbInsertDeviceInfo:${usbInsertDeviceInfo}"
    }

}
//键盘实现类
class KeyBord:IUSB{
    override var usbVersionInfo: String = "3.2"
//        get() = field
//        set(value) {
//            field = value
//        }
    override var usbInsertDeviceInfo: String = "键盘接入了USB接口"
//        get() {
//          println("你get了${field}值出来")
//          return field;
//        }
//        set(value) {
//            field = value
//            println("你set了${field}值出来")
//        }
    override fun insertUsb(): String {
      return "键盘usbVersionInfo${usbVersionInfo},usbInsertDeviceInfo:${usbInsertDeviceInfo}"
    }
}
fun main() {
   val mouse:IUSB = Mouse(usbVersionInfo="3.1",usbInsertDeviceInfo="3.1鼠标插入了USB接口")
    println(mouse.insertUsb())
    println()
    val keyBord:IUSB = KeyBord();
    println(keyBord.insertUsb())
    keyBord.usbInsertDeviceInfo = "Test"

}
    